
const Menu = require('./models_menu.js')
const Util = require('../utils/util.js')

module.exports = {
  /**
   * 创建一个菜单，创建需要最高权限，超级管理员只允许一个存在
   * @param {*} req 
   * @param {*} res 
   * @param {*} next 
   */
    async createMenu(req, res, next) {
        // 校验传入的参数
        let fields = req.body;
        // try {
        //   // let validateResult = checkCreateUserFields(fields, req)
        //   // if (!validateResult) {
        //   //   return res.status(500).send(Util.renderApiErr(req, res, 500, '数据校验失败'))
        //   // }
        // } catch (err) {
        //   return res.status(500).send(Util.renderApiErr(req, res, 500, err))
        // }

        const obj = {
          name: fields.name,
          url: fields.url || '',
          sort_id: fields.sort_id,
          parent_id: fields.parent_id,
          routepath: fields.routepath || '',
          iconfont: fields.iconfont,
          menucode: fields.menucode || '',
          description: fields.description || '',
          enable: fields.enable ? true : false
        }

        const newMenu = new Menu(obj)

        try {
          let cateObj = await newMenu.save()
          // 更新sortPath defaultUrl

          let newQuery = {}
          if (fields.parent_id === '0') {
            newQuery.sort_path = '0,' + cateObj._id
          } else {
            let parentObj = await Menu.findOne({ '_id': fields.parent_id }, 'sort_path')
            // log('parentObj ', parentObj)
            newQuery.sort_path = parentObj.sort_path + "," + cateObj._id
          }
          console.log(newQuery)
          await Menu.findOneAndUpdate({ _id: cateObj._id }, { $set: newQuery })
          return res.send(Util.renderApiData(req, res, 200, '菜单创建成功', { id: cateObj._id }))
        } catch (err) {
          return res.status(500).send(Util.renderApiErr(req, res, 500, err))
        }

    },

    /**
   * 获取菜单列表
   * @param {*} req 
   * @param {*} res 
   * @param {*} next 
   */
    async getMenuList(req, res, next) {
        try {
          // log(req.query)
          let fields = req.query
          let queryObj = {}
          // let group = fields.group

          // if (group) {
          //   queryObj.group = group
          // }

          // 查询文档
          const menuList = await Menu.find(queryObj)

          // log(menuList)

          let menuObj = {
            list: menuList
          }
          return res.send(Util.renderApiData(req, res, 200, '菜单列表获取成功', menuObj))
        } catch (err) {
          return res.status(500).send(Util.renderApiErr(req, res, 500, err))
        }
    },
}